#include <head.h>

/*
int fcntl(int fd, int cmd, ...  arg );

struct flock {
    short l_type;     // 锁的类型: F_RDLCK, F_WRLCK, F_UNLCK
    short l_whence;   // 偏移量的基准: SEEK_SET, SEEK_CUR, SEEK_END
    off_t l_start;    // 锁定区域的起始位置
    off_t l_len;      // 锁定区域的长度，0表示直到文件末尾
    pid_t l_pid;      // 持有锁的进程ID，主要在 F_GETLK 时使用
};

*/

int main(int argc, char const *argv[])
{
    int fd = open("hello.txt", O_CREAT | O_RDWR, 0666); // 读写锁
    struct flock my_lock;

    my_lock.l_type = F_WRLCK;    // 写锁
    my_lock.l_whence = SEEK_SET; // 从头开始
    my_lock.l_len = 0;           // 锁整个文件
    my_lock.l_start = 0;         // 锁整个文件

    fcntl(fd , F_SETLKW , &my_lock); // 
    // ......

    

    // 解锁
    my_lock.l_type = F_UNLCK;    // 写锁
    fcntl(fd , F_SETLKW , &my_lock); // 
    return 0;
}
